let notices=[]//注册通知的页面、组件集合


/**
 * @param {String} name 通知的名称，要唯一，建议写在专门文件中
 * @param {Object} receiver 接受的函数，接受到通知以后调用
 * @param {Object} observer 注册的对象，如page或component
 */
function add(name,receiver,observer){
	let notice={
		name,
		receiver,
		observer
	}
	notices.push(notice)
}

/**
 * @param {Object} name 通知的名称
 * @param {Object} observer 注册的对象
 */
function remove(name,observer){
	for(let i =0;i<notices.length;i++){
		let notice=notices[i]
		if(notice.name==name){
			if(notice.observer==observer){
				notices.splice(i,1)
				return
			}
		}
	}
}

/**
 * 通知中心，调用observe的
 * @param {Object} name 通知的名称
 * @param {Object} info 携带的参数
 */
function post(name,info){
	if(notices.length==0){
		console.log("err:还没有注册通知");
		return
	}
	for(let i=0;i<notices.length;i++){
		let notice=notices[i]
		if(notice.name=name){
			notice.receiver(info)
		}
	}
}

module.exports={
	add,
	remove,
	post
}